Разработка расширений

Расширение портала Semantic MDM представляет собой стандартный модуль Angular (@****NgModule()), декорированный аннотацией @M2Plugin() из библиотеки m2-core, позволяющей задать описание реализаций точек расширения. В рамках одного расширения может бы реализовано неограниченное количество точек расширения.

Аннотация @M2Plugin(config: M2PluginConfig) принимает конфигурационный объект со следующими параметрами:

Описание параметра расширения представляет собой объект Parameter со следующими полями:

Для чтения значений параметров в расширении базовое приложение предоставляет сервис PluginSupportService, в котором имеется метод getPluginSettings(pluginName: string), ожидающий в качестве аргумента наименование расширения из @M2Plugin(). Метод возвращает объект, представляющий собой набор пар ключ-значение, где ключ - наименование параметра.

В настоящий момент предусмотрены следующие точки расширения:

Помимо декоратора @M2Plugin() библиотека m2-core предоставляет следующие полезные при разработке расширений пакеты:

В расширении также доступны все системные диалоги портала, которые могут быть открыты с помощью метода openDialog(<наименование_диалога>, <опции>) из сервиса GlobalModalsService. Ниже перечислены наименования системых диалогов и типы объектов, описывающих их опции (актуальный список доступных диалогов и соответствующих им конфигурационных объектов см. в LazyDialogType, LazyDialogConfig):

Точка расширения типа RouterExtensionPoint

Точка расширения RouterExtensionPoint предназначена для добавления новых модулей приложения, управляемых роутером, или переопределение штатных и описывается следующим параметрами:

Внимание! В настоящий момент для точки расширения типа RouterExtensionPoint в качестве модуля в moduleType можно указывать только корневой модуль расширения (модуль, помеченный аннотацией @****M2Plugin()).

Точка расширения типа PanelBtnExtensionPoint

Точка расширения PanelBtnExtensionPoint предназначена для добавления новой кнопки в панель и описывается следующими параметрами:

Точка расширения типа PanelBtnFilterExtensionPoint

Точка расширения PanelBtnFilterExtensionPoint предназначена для скрытия кнопок в панели и описывается следующими параметрами:

Точка расширения типа PanelBtnHandlerExtensionPoint

Точка расширения PanelBtnHandlerExtensionPoint предназначена для переопределения поведения кнопки в панели и описывается следующими параметрами:

Точка расширения типа MenuItemsExtensionPoint

Точка расширения MenuItemsExtensionPoint служит для модификации контекстного меню того или иного объекта и описывается следующим параметрами:

Создаваемый через расширение пункт меню должен представлять собой объект, реализующий следующий интерфейс:

interface PluginMenuItem extends MenuItem {
targetItemPredicate?: (item: MenuItem) => boolean;
placement?: PlacementType; // BEFORE, AFTER или INSIDE
}

Где

export interface MenuItem {
label?: string;
icon?: string;
command?: (event?: any) => void;
url?: string;
routerLink?: any;
queryParams?: {
[k: string]: any;
};
items?: MenuItem[] | MenuItem[][];
expanded?: boolean;
disabled?: boolean;
visible?: boolean;
target?: string;
routerLinkActiveOptions?: any;
separator?: boolean;
badge?: string;
badgeStyleClass?: string;
style?: any;
styleClass?: string;
title?: string;
id?: string;
}

Точка расширения типа BgTaskResultExtensionPoint

Точка расширения позволяет добавить нестандартный обработчик результата выполнения фоновой задачи и описывается следующим параметрами:

Точка расширения типа BgTaskNotificationTmplExtensionPoint

Точка расширения позволяет задать нестандартный шалон сообщения о завершении фоновой задачи и описывается следующим параметрами:

Точка расширения типа ApplicationJournalFiltersExtensionPoint

Точка расширения ApplicationJournalFiltersExtensionPoint предоставляет возможность переопределения панели с фильтрами в модуле управления заявками и описывается следующим параметрами:

Точка расширения типа ViewExtensionPoint

Точка расширения ViewExtensionPoint позволяет переопределять штатное представление части пользовательского интерфейса и описывается следующим параметрами:

Точка расширения типа HandlerExtensionPoint

Точка расширения HandlerExtensionPoint позволяет переопределять или дополнять стандартное поведение приложения при обработке пользовательских или системых событий, например, создании/отправке/передаче заявки, изменении значения атрибута, форматировании значений переходных ключей и т.д. Точка расширения описывается следующим параметрами:

Переопределяющие обработчкики:

Дополняющие обработчики:

Точка расширения типа ValueHintProviderExtensionPoint

Точка расширения ValueHintProviderExtensionPoint позволяет добавить всплываю подсказку для значения простого атрибута позиции и описывается следующим параметрами:

Точка расширения типа SettingsControlsExtensionPoint

Точка расширения SettingsControlsExtensionPoint позволяет добавлять кнопки в разделы страницы "Настройки" и описывается следующим параметрами: